<?php

/**
 * 用户模型
 * 处理用户信息的数据库操作和业务逻辑
 */

namespace app\common\model\users;

use app\common\model\BaseModel;
use think\facade\Db;
use app\common\service\Util;
use app\index\common\ConstVar;

/**
 * 用户模型类
 * 负责用户信息的查询、更新、实名认证等操作
 */
class Users extends BaseModel
{
    protected $name = 'users';
    protected $pk = 'id';

    protected $autoWriteTimestamp = 'int';
    protected $createTime = 'create_time';
    protected $updateTime = 'update_time';

    protected $type = [
        'create_time' => 'timestamp',
        'update_time' => 'timestamp',
    ];
    
    /**
     * 字段验证规则
     * @var array
     */
    protected $schema = [
        'id'            => 'int',
        'username'      => 'string',
        'password'      => 'string',
        'openid'        => 'string',
        'phone'         => 'string',
        'nickname'      => 'string',
        'avatar'        => 'string',
        'gender'        => 'int',
        'status'        => 'int',
        'create_time'   => 'timestamp',
        'update_time'   => 'timestamp',
    ];

    /**
     * 密码字段修改器
     * 自动将明文密码转换为md5加密
     * @param string $value 明文密码
     * @return string md5加密后的密码
     */
    public function setPasswordAttr($value)
    {
        return md5($value);
    }

    /**
     * 获取用户信息
     * @param int $userId 用户ID
     * @return array|null 用户信息数组，不存在时返回null
     */
    public function getUserInfo(int $userId)
    {
        $userId = intval($userId);
        if ($userId <= 0) {
            return null;
        }
        $userInfo = $this->where('id', $userId)->find();
        return $userInfo;
    }

    /**
     * 通过openid获取用户信息
     * @param string $openid 微信openid
     * @return array|null 用户信息数组，不存在时返回null
     */
    public function getUserByOpenid(string $openid)
    {
        if (empty($openid)) {
            return null;
        }
        $userInfo = $this->where('openid', $openid)->find();
        return $userInfo;
    }
}